/*
* 1，创建服务器伺服进程，执行端口监听
* 2，执行url路由，具体就是把客户端的访问url转到特定处理函数上
* 3，srv为那些url处理函数生成实参request（req）、response（res）
* 4，request里面封装的是从客户端（浏览器）过来的参数
* （url，cookie，method【get post】等等）
* 数据（get，post）
* 5，response主要是封装了回应客户端的数据和方法，我们主要用到的方法有
* write和end，end要最后执行一次（仅仅一次）
*
* */
var url  = require('url') // 分拆url
/*
http://domain/
http://domain/path/a(.html)(.php)
http://domain/a.php?name=jack&gender=male
domain
path
parameters

*/

var routes = require("./routes"),  //把routes里面的东西全部提取出来
    exhandle = require("./exception").handle    //把exception里面的.handle的东西提取出来
//console.log(routes)
//dispatch函数真正执行了路由
var dispatch = function(req,res){
    var ob = url.parse(req.url)  //把路由的东西放入ob里面
    //console.log(ob)
    var func = routes.handles[ob.pathname]
    //console.log(func)
    if(typeof func == "undefined"){
        exhandle(req,res)
    }else{
        func(req,res)
    }
}

var http=require("http"),
    port=3001,
    srv=http.createServer(dispatch)
console.log("server listens on " + port)
srv.listen(port)

